import Vue from 'vue'
import VueRouter from 'vue-router'
import LoginView from "@/views/LoginView.vue";
import BookView from "@/views/BookView.vue";
import BookTypeView from "@/views/BookTypeView.vue";
import ReaderDashboard from "@/views/ReaderDashboard.vue"; // 读者仪表盘布局组件
import CommonView from "@/views/CommonView.vue"; // 管理员布局组件
import ReaderBorrowHistory from "@/views/ReaderBorrowHistory.vue"; // 借阅历史组件
import ReaderAvailableBooks from "@/views/ReaderAvailableBooks.vue"; // <-- 新增：导入可借阅图书组件

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    redirect: '/login' // 默认跳转到登录页面
  },
  {
    path: '/login',
    name: 'Login',
    component: LoginView
  },
  {
    path: '/', // 使用父路由来嵌套管理页面
    component: CommonView, // 您的主布局组件
    meta: { requiresAuth: true, adminOnly: true }, // 需要认证且只有管理员才能访问
    children: [
      {
        path: 'bookinfo',
        name: 'BookInfo',
        component: BookView,
        meta: { requiresAuth: true, adminOnly: true }
      },
      {
        path: 'booktype',
        name: 'BookType',
        component: BookTypeView,
        meta: { requiresAuth: true, adminOnly: true }
      },
      {
        path: '/about', // 假设about页面不需要登录即可访问，或者有自己的认证逻辑
        name: 'About',
        component: () => import('../views/AboutView.vue'),
        meta: { requiresAuth: true, adminOnly: true }
      }
      // ... 其他管理员页面
    ]
  },
  {
    path: '/reader-dashboard',
    name: 'ReaderDashboard',
    component: ReaderDashboard, // 读者仪表盘布局组件
    meta: { requiresAuth: true, readerOnly: true }, // 需要认证且只有读者才能访问
    children: [
      // 默认子路由重定向：当访问 /reader-dashboard 时，自动跳转到 /reader-dashboard/available-books
      {
        path: '', // 空路径表示当父路由被访问时，这个子路由作为默认内容
        redirect: 'available-books' // 重定向到可借阅图书页面
      },
      {
        path: 'available-books', // <-- 对应 ReaderDashboard.vue 中的菜单 index="/reader-dashboard/available-books"
        name: 'ReaderAvailableBooks',
        component: ReaderAvailableBooks, // <-- 使用导入的 ReaderAvailableBooks 组件
        meta: { requiresAuth: true, readerOnly: true }
      },
      {
        path: 'borrow-history', // <-- 对应 ReaderDashboard.vue 中的菜单 index="/reader-dashboard/borrow-history"
        name: 'ReaderBorrowHistory',
        component: ReaderBorrowHistory,
        meta: { requiresAuth: true, readerOnly: true }
      }
    ]
  },
]

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

// 添加全局导航守卫，用于认证和权限控制
router.beforeEach((to, from, next) => {
  const token = localStorage.getItem('token');
  const isAdmin = localStorage.getItem('isAdmin');

  // 如果需要认证
  if (to.meta.requiresAuth) {
    if (token) {
      // 如果是管理员页面，检查是否是管理员
      if (to.meta.adminOnly) {
        if (isAdmin == 1) { // 注意：从localStorage获取的是字符串，所以用 ==
          next();
        } else {
          // 不是管理员，重定向到读者页面或无权限页面
          alert('无权限访问此页面！');
          next('/reader-dashboard'); // 或者一个通用的无权限页面
        }
      }
      // 如果是读者页面，检查是否是读者（非管理员）
      else if (to.meta.readerOnly) {
        if (isAdmin == 0) {
          next();
        } else {
          // 不是读者，重定向到管理员页面或无权限页面
          alert('无权限访问此页面！');
          next('/bookinfo'); // 或者一个通用的无权限页面
        }
      }
      else {
        // 其他需要认证的页面，直接放行
        next();
      }
    } else {
      // 没有token，重定向到登录页面
      next('/login');
    }
  } else {
    // 不需要认证的页面，直接放行
    next();
  }
});

export default router